#!/bin/bash

# Git预提交钩子脚本
# 在提交代码前自动运行测试

set -e

# 颜色定义
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'

echo -e "${BLUE}🔒 Git预提交检查${NC}"
echo "===================="

# 检查是否有暂存的文件
if git diff --cached --quiet; then
    echo -e "${YELLOW}⚠️  没有暂存的文件，跳过检查${NC}"
    exit 0
fi

# 显示将要提交的文件
echo -e "${BLUE}📁 将要提交的文件:${NC}"
git diff --cached --name-only | head -10
echo

# 检查是否有Dart文件变更
DART_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep '\.dart$' || true)

if [ -z "$DART_FILES" ]; then
    echo -e "${YELLOW}ℹ️  没有Dart文件变更，跳过Flutter测试${NC}"
    exit 0
fi

echo -e "${BLUE}🚀 检测到Dart文件变更，开始预提交测试...${NC}"

# 运行快速测试
if ! ./quick_test.sh; then
    echo -e "${RED}❌ 预提交测试失败！${NC}"
    echo -e "${YELLOW}💡 请修复问题后重新提交${NC}"
    exit 1
fi

echo -e "${GREEN}✅ 预提交检查通过！${NC}"
echo -e "${BLUE}🎉 可以安全提交代码${NC}"
